/**
 *
 * @description: js相关脚本
 * @author: junyong.hong
 * @createTime: 2018/3/26
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
// gulp
import gulp from 'gulp';
// 用gulp语句中做if判断
import gulpif from 'gulp-if';
// 用gulp处理文件拼接
import concat from 'gulp-concat';
// 打包过程
import webpack from 'webpack';
// 文件流
import gulpWebpack from 'webpack-stream';
// 文件重命名做标志
import named from 'vinyl-named';
// 热更新
import livereload from 'gulp-livereload';
// 处理文件信息流
import plumber from 'gulp-plumber';
// 对文件从命名
import rename from 'gulp-rename';
// js、css压缩
import uglify from 'gulp-uglify';
// 输出的包 日志、色彩的输出
import {log,colors} from 'gulp-util';
// 命令行解析
import args from './util/args';


// 创建gulp任务，任务名称：scripts
gulp.task('scripts',()=>{
    return gulp.src(['app/js/index.js'])
        // 处理常规的错误逻辑
        .pipe(plumber({
            errorHandle:function () {
                
            }
        }))

        // 文件重命名
        .pipe(named())

        // 对js进行编译
        .pipe(gulpWebpack({
            module:{
                loaders:[{
                    test:/\.js$/,
                    loader:'babel'
                }]
            }
        }),null,(err,stats)=>{
            log(`Finished '${colors.cyan('scripts')}'`,stats.toString({
                chunks:false
            }))
        })

        // 编译后的文件放置路径
        .pipe(gulp.dest('server/public/js'))

        // 编译后的名称
        .pipe(rename({
            basename:'cp',
            extname:'.min.js'
        }))

        // 压缩
        .pipe(uglify({compress:{properties:false},output:{'quote_keys':true}}))

        // 存储路径
        .pipe(gulp.dest('server/public/js'))

        // 命令行有值，就执行热更新
        .pipe(gulpif(args.watch,livereload()))
})